package cn.kgc.javase.collection;

import java.util.ArrayList;

/**
 * @author 课工场
 * @date 2024/8/15
 * @description  java中集合的使用
 *
 * 1. 为什么使用集合     容器    存储数据
 *    变量   单个数据
 *    数组   多个相同类型数据  存储数据的个数是一定的
 *    int[] numbers =  new int[5]    5   int
 *
 *    集合   可以存储不同类型的的数据    不限定个数
 *
 *    集合的基本继承体系结构  Collection
 *    List     有序   可重复
 *       ArrayList     基于数组的存储      索引   查询操作多  查询速度快
 *       LinkedList    基于链表的存储             增删操作多   双端队列
 *    Set      无序   不可重复
 *     HashSet
 *    Map    k  v
 *    HashMap
 *
 *
 *   byte  short  int        long    float     double    boolean    char   基本类型
 *   Byte  Short  Integer    Long    Float     Double    Boolean   Character     包装类型
 *
 *         // 自动装箱  Integer.valueOf()
 *         Integer  i =  1 ;
 *         // 自动拆箱  i.intValue()
 *         int a = i;
 */
public class CollectionDemo {


    public static void main(String[] args) {


        //  初始化容量   0    添加第一个元素使 将数组的容量扩展为10    扩容机制   1.5倍
        // 创建集合时 泛型只能是Object类型  不能写成基本数据类型
        ArrayList<Integer> arrayList = new ArrayList<>();
        // add() 添加数据
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);

        arrayList.add(1,10);

        // 获取集合数据
        Integer number = arrayList.get(0);
        System.out.println("number = " + number);

        // 遍历集合   增强for循环
        for (Integer num : arrayList) {
            System.out.println("num = " + num);
        }

        System.out.println("-----------------------------------");

        //  fori
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println("arrayList.get(i) = " + arrayList.get(i));
        }

        System.out.println("-----------------------------------");
        arrayList.stream().forEach(System.out::println);


        Integer remove = arrayList.remove(1);
        System.out.println("remove = " + remove);

    }

}
